home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / kermit.arc / CKUKER.DOC < prev   
Text File  |  1989-01-12  |  98KB  |  2,093 lines

  1.  
  2.  
  3.  
  4. 9. UNIX KERMIT
  5.  
  6. Program:    Frank  da  Cruz,  Bill Catchings, Jeff Damens, Columbia University;
  7.             Herm Fischer, Encino CA; contributions by many others.
  8. Language:   C
  9. Documentation:
  10.             Frank da Cruz, Herm Fischer
  11. Version:    4D(061)
  12. Date:       September 9, 1986
  13.  
  14. C-Kermit is an implementation of Kermit, written modularly and transportably in
  15. C. The protocol state transition table is written in wart, a  (non-proprietary)
  16. lex-like  preprocessor for C. System-dependent primitive functions are isolated
  17. into separately compiled modules so that the program should be easily  portable
  18. among  Unix systems and also to non-Unix systems that have C compilers, such as
  19. the Apple Macintosh and the Commodore Amiga.  This document applies to Unix im-
  20. plementations of C-Kermit, and in most ways also to the VMS and other implemen-
  21. tations.
  22.  
  23.  
  24. Unix Kermit Capabilities At A Glance:
  25.  
  26.   Local operation:                   Yes
  27.   Remote operation:                  Yes
  28.   Login scripts:                     Yes
  29.   Transfer text files:               Yes
  30.   Transfer binary files:             Yes
  31.   Wildcard send:                     Yes
  32.   File transfer interruption:        Yes
  33.   Filename collision avoidance:      Yes
  34.   Can time out:                      Yes
  35.   8th-bit prefixing:                 Yes
  36.   Repeat count prefixing:            Yes
  37.   Alternate block checks:            Yes
  38.   Terminal emulation:                Yes
  39.   Communication settings:            Yes
  40.   Transmit BREAK:                    Yes
  41.   Support for dialout modems:        Yes
  42.   IBM mainframe communication:       Yes
  43.   Transaction logging:               Yes
  44.   Session logging:                   Yes
  45.   Debug logging:                     Yes
  46.   Packet logging:                    Yes
  47.   Act as server:                     Yes
  48.   Talk to server:                    Yes
  49.   Advanced server functions:         Yes
  50.   Local file management:             Yes
  51.   Command/Init files:                Yes
  52.   UUCP and multiuser line locking:   Yes
  53.   File attributes packets:           No
  54.   Command macros:                    No
  55.   Raw file transmit:                 No
  56.  
  57. All numbers in the C-Kermit documentation are decimal unless noted otherwise.
  58.  
  59. C-Kermit provides traditional Unix command line operation  as  well  as  inter-
  60.  
  61.  
  62.  
  63. active  command  prompting and execution.  The command line options provide ac-
  64. cess to a basic subset of C-Kermit's capabilities; the interactive command  set
  65. is far richer.
  66.  
  67. On  systems  with  dialout  modems,  C-Kermit's  command  file and login script
  68. facilities provide a counterpart  to  UUCP  for  file  transfer  with  non-UNIX
  69. operating  systems, including the use of scheduled (e.g. late night) unattended
  70. operation.
  71.  
  72.  
  73. 9.1. The Unix File System
  74.  
  75. Consult your Unix manual for details about the file system under  your  version
  76. of  Unix.  In general, Unix files generally have lowercase names, possibly con-
  77. taining one or more dots or other special characters.    Unix  directories  are
  78. tree-structured.    Directory  levels  are separated by slash ("/") characters.
  79. For example, 
  80.  
  81.   /usr/foo/bar
  82.  
  83. denotes the file bar in the directory /usr/foo.  Wildcard or "meta"  characters
  84. allow groups of files to be specified.  "*" matches any string; "?" matches any
  85. single character.
  86.  
  87. When C-Kermit is invoked with file arguments  specified  on  the  Unix  command
  88. line,  the  Unix  shell  (Bourne Shell, C-Shell, K-Shell, etc) expands the meta
  89. characters itself, and in this case a wider variety is available.  For example,
  90.  
  91.   kermit -s ~/ck[uvm]*.{upd,bwr}]
  92.  
  93. is  expanded by the Berkeley C-Shell into a list of all the files in the user's
  94. home directory (~/) that start with the characters "ck", followed by  a  single
  95. character  "u", "v", or "m", followed by zero or more characters, followed by a
  96. dot, followed by one of the strings "upd" or "bwr".  Internally,  the  C-Kermit
  97. program itself expands only the "*" and "?" meta characters.
  98.  
  99. Unix  files are linear (sequential) streams of 8-bit bytes.  Text files consist
  100. of 7-bit ASCII characters, with the high-order bit off (0), and lines separated
  101. by  the Unix newline character, which is linefeed (LF, ASCII 10).  This distin-
  102. guishes Unix text files from those on most other ASCII systems, in which  lines
  103. are  separated  by a carriage-return linefeed sequence (CRLF, ASCII 13 followed
  104. by ASCII 10).  Binary files are likely to contain data in the high bits of  the
  105. file bytes, and have no particular line or record structure.
  106.  
  107. When  transferring  files,  C-Kermit  will convert between upper and lower case
  108. filenames and between LF and CRLF line terminators automatically,  unless  told
  109. to  do  otherwise.   When binary files must be transferred, the program must be
  110. instructed not to perform LF/CRLF conversion (-i on the command  line  or  "set
  111. file type binary" interactively; see below).
  112.  
  113.  
  114.  
  115. 9.2. File Transfer
  116.  
  117. If  C-Kermit  is  in  local mode, the screen (stdout) is continously updated to
  118. show the progress of the file transer.  A dot is printed for  every  four  data
  119. packets, other packets are shown by type:
  120.  
  121.     I Exchange Parameter Information
  122.     R Receive Initiate
  123.     S Send Initiate
  124.     F File Header
  125.     G Generic Server Command
  126.     C Remote Host Command
  127.     N Negative Acknowledgement (NAK)
  128.     E Fatal Error
  129.     T Indicates a timeout occurred
  130.     Q Indicates a damaged, undesired, or illegal packet was received
  131.     % Indicates a packet was retransmitted
  132.  
  133. You may type certain "interrupt" commands during file transfer:
  134.  
  135.     Control-F:  Interrupt the current File, and go on to the next (if any).
  136.     Control-B:  Interrupt the entire Batch of files, terminate the transaction.
  137.     Control-R:  Resend the current packet
  138.     Control-A:  Display a status report for the current transaction.
  139.  
  140. These  interrupt characters differ from the ones used in other Kermit implemen-
  141. tations to avoid conflict with commonly used Unix shell  interrupt  characters.
  142. With  Version  7,  System  III, and System V implementations of Unix, interrupt
  143. commands must be preceeded by the 'connect' escape character (e.g. normally-\).
  144. Ctrl-F  and  Ctrl-B are effective only during the transfer of data (D) packets,
  145. and cannot be used to interrupt a transfer that has not yet reached that stage.
  146.  
  147.     CAUTION:  If Control-F or Control-B is used to cancel an incoming file,
  148.     and  a file of the same name previously existed, and the "file warning"
  149.     feature is not enabled, then the previous copy of the  file  will  dis-
  150.     appear.
  151.  
  152. EMERGENCY EXIT:  When running Unix Kermit in remote mode, if you have started a
  153. protocol operation (sending or receiving a file, server command wait, etc), you
  154. will not be able to regain control of the terminal until the protocol operation
  155. has run its course (completed or timed out).  In particular,  you  cannot  stop
  156. the protocol by typing the normal Unix interrupt characters, since the terminal
  157. has been put in "raw mode".  If you need to regain control quickly --  for  in-
  158. stance, because the protocol is stuck -- you can type the following sequence of
  159. four characters directly  to  the  Unix  Kermit  program  ("connect"  first  if
  160. necessary):  
  161.  
  162.     Control-A Control-C Control-C Carriage-Return
  163.  
  164. This will cause the program to exit and restore the terminal to normal.
  165.  
  166.  
  167.  
  168. 9.3. Command Line Operation
  169.  
  170. The  C-Kermit command line syntax conforms to the Proposed Syntax Standards for
  171. Unix System Commands put forth by Kathy Hemenway and Helene  Armitage  of  AT&T
  172. Bell Laboratories in Unix/World, Vol.1, No.3, 1984.  The rules that apply are:
  173.  
  174.    - Command names must be between 2 and 9 characters ("kermit" is 6).
  175.    - Command names must include lower case letters and digits only.
  176.    - An option name is a single character.
  177.    - Options are delimited by '-'.
  178.    - Options  with  no  arguments  may  be  grouped  (bundled)  behind one
  179.      delimiter.
  180.    - Option-arguments cannot be optional.
  181.    - Arguments immediately follow options, separated by whitespace.
  182.    - The order of options does not matter.
  183.    - '-' preceded and followed by whitespace means standard input.
  184.  
  185. A group of bundled options may end with an option that has an argument.
  186.  
  187. The following notation is used in command descriptions:
  188.  
  189. fn      A Unix file specification, possibly containing the  "wildcard"  charac-
  190.         ters  `*'  or  `?' (`*' matches all character strings, `?'  matches any
  191.         single character).
  192.  
  193. fn1     A Unix file specification which may not contain `*' or `?'.
  194.  
  195. rfn     A remote file specification in the remote system's  own  syntax,  which
  196.         may denote a single file or a group of files.
  197.  
  198. rfn1    A remote file specification which should denote only a single file.
  199.  
  200. n       A decimal number between 0 and 94.
  201.  
  202. c       A  decimal  number between 0 and 127 representing the value of an ASCII
  203.         character.
  204.  
  205. cc      A decimal number between 0 and 31, or else  exactly  127,  representing
  206.         the value of an ASCII control character.
  207.  
  208. [ ]     Any field in square braces is optional.
  209.  
  210. {x,y,z} Alternatives are listed in curly braces.
  211.  
  212. C-Kermit  command  line  options  may  specify  either actions or settings.  If
  213. C-Kermit is invoked with a command line that specifies no actions, then it will
  214. issue  a  prompt  and  begin interactive dialog.  Action options specify either
  215. protocol transactions or terminal connection.
  216.  
  217. -s fn   Send the specified file or files.    If  fn  contains  wildcard  (meta)
  218.         characters,  the  Unix shell expands it into a list.  If fn is '-' then
  219.         kermit sends from standard input, which must come from a file:  
  220.  
  221.           kermit -s - < foo.bar
  222.  
  223.         or a parallel process:  
  224.  
  225.  
  226.  
  227.           ls -l | grep christin | kermit -s -
  228.  
  229.         You cannot use this mechanism to send terminal typein.  If you want  to
  230.         send  a  file  whose  actual name is "-" you can precede it with a path
  231.         name, as in 
  232.  
  233.           kermit -s ./-
  234.  
  235. -r      Receive a file or files.  Wait passively for files to arrive.
  236.  
  237. -k      Receive (passively) a file or files, sending them to  standard  output.
  238.         This option can be used in several ways:
  239.  
  240.         kermit -k
  241.             Displays the incoming files on your screen;  to  be  used  only  in
  242.             "local mode" (see below).
  243.  
  244.         kermit -k > fn1
  245.             Sends the incoming file or files to the named file, fn1.   If  more
  246.             than  one  file  arrives,  all  are  concatenated together into the
  247.             single file fn1.
  248.  
  249.         kermit -k | command
  250.             Pipes the incoming data (single or multiple files) to the indicated
  251.             command, as in 
  252.  
  253.               kermit -k | sort > sorted.stuff
  254.  
  255. -a fn1  If you have specified a file transfer option, you may give an alternate
  256.         name for a single file with the -a ("as") option.  For example, 
  257.  
  258.           kermit -s foo -a bar
  259.  
  260.         sends  the file foo telling the receiver that its name is bar.  If more
  261.         than one file arrives or is sent, only the first file  is  affected  by
  262.         the -a option:  
  263.  
  264.           kermit -ra baz
  265.  
  266.         stores the first incoming file under the name baz.
  267.  
  268. -x      Begin server operation.  May be used in either local or remote mode.
  269.  
  270. Before  proceeding, a few words about remote and local operation are necessary.
  271. C-Kermit is "local" if it is running on PC or workstation that  you  are  using
  272. directly, or if it is running on a multiuser system and transferring files over
  273. an external communication line -- not your job's controlling terminal  or  con-
  274. sole.   C-Kermit is remote if it is running on a multiuser system and transfer-
  275. ring files over its own controlling  terminal's  communication  line  (normally
  276. /dev/tty), connected to your PC or workstation.
  277.  
  278. If  you  are running C-Kermit on a PC, it is in local mode by default, with the
  279. "back port" designated for file transfer and terminal connection.  If  you  are
  280. running  C-Kermit on a multiuser (timesharing) system, it is in remote mode un-
  281. less you explicitly point it at an external line for file transfer or  terminal
  282. connection.  The following command sets C-Kermit's "mode":
  283.  
  284.  
  285.  
  286. -l dev  Line  --  Specify a terminal line to use for file transfer and terminal
  287.         connection, as in 
  288.  
  289.           kermit -l /dev/ttyi5
  290.  
  291. When an external line is being used, you might also need  some  additional  op-
  292. tions for successful communication with the remote system:
  293.  
  294. -b n    Baud  --  Specify the baud rate for the line given in the -l option, as
  295.         in 
  296.  
  297.           kermit -l /dev/ttyi5 -b 9600
  298.  
  299.         This option should always be included with the  -l  option,  since  the
  300.         speed of an external line is not necessarily what you expect.
  301.  
  302. -p x    Parity  --  e,o,m,s,n  (even, odd, mark, space, or none).  If parity is
  303.         other than none, then the 8th-bit prefixing mechanism will be used  for
  304.         transferring  8-bit  binary  data, provided the opposite Kermit agrees.
  305.         The default parity is none.
  306.  
  307. -t      Specifies half duplex,  line  turnaround  with  XON  as  the  handshake
  308.         character.
  309.  
  310. The  following  commands may be used only with a C-Kermit which is local either
  311. by default or else because the -l option has been specified.
  312.  
  313. -g rfn  Actively request a remote server to send the named file or  files;  rfn
  314.         is a file specification in the remote host's own syntax.  If fn happens
  315.         to contain any special  shell  characters,  like  '*',  these  must  be
  316.         quoted, as in 
  317.  
  318.           kermit -g x\*.\?
  319.  
  320. -f      Send a 'finish' command to a remote server.
  321.  
  322. -c      Establish  a  terminal  connection  over  the specified or default com-
  323.         munication line, before any protocol transaction takes place.  Get back
  324.         to   the   local  system  by  typing  the  escape  character  (normally
  325.         Control-Backslash) followed by the letter 'c'.
  326.  
  327. -n      Like -c, but after a protocol transaction takes place; -c  and  -n  may
  328.         both  be used in the same command.  The use of -n and -c is illustrated
  329.         below.
  330.  
  331. On a timesharing system, the -l and -b options will also have  to  be  included
  332. with the -r, -k, or -s options if the other Kermit is on a remote system.
  333.  
  334. Several other command-line options are provided:
  335.  
  336. -i      Specifies that files should be sent or received exactly "as is" with no
  337.         conversions.  This option is necessary for transmitting  binary  files.
  338.         It may also be used in Unix-to-Unix transfers (it must be given to both
  339.         Unix Kermit programs), where it will improve performance by circumvent-
  340.         ing  the  normal  text-file conversions, and will allow mixture of text
  341.         and binary files in a single file group.
  342.  
  343.  
  344.  
  345. -w      Write-Protect -- Avoid filename collisions for incoming files.
  346.  
  347. -q      Quiet -- Suppress screen update during file transfer, for  instance  to
  348.         allow a file transfer to proceed in the background.
  349.  
  350. -d      Debug -- Record debugging information in the file debug.log in the cur-
  351.         rent directory.  Use this option if you believe  the  program  is  mis-
  352.         behaving, and show the resulting log to your local kermit maintainer.
  353.  
  354. -h      Help -- Display a brief synopsis of the command line options.
  355.  
  356. The command line may contain no more than one protocol action option.
  357.  
  358. Files  are  sent with their own names, except that lowercase letters are raised
  359. to upper, pathnames are stripped off, certain special characters like (`~') and
  360. (`#')  are changed to `X', and if the file name begins with a period, an `X' is
  361. inserted before it.  Incoming files are stored under  their  own  names  except
  362. that  uppercase  letters  are  lowered, and, if -w was specified, a "generation
  363. number" is appended to the name if it has the same name  as  an  existing  file
  364. which  would  otherwise be overwritten.  If the -a option is included, then the
  365. same rules apply to its argument.  The file transfer display shows  any  trans-
  366. formations performed upon filenames.
  367.  
  368. During transmission, files are encoded as follows:
  369.  
  370.    - Control characters are converted to prefixed printables.
  371.  
  372.    - Sequences  of repeated characters are collapsed via repeat counts, if
  373.      the other Kermit is also capable of repeated-character compression.
  374.  
  375.    - If parity is being used on the communication  line,  data  characters
  376.      with  the  8th  (parity)  bit on are specially prefixed, provided the
  377.      other Kermit is capable of 8th-bit prefixing; if  not,  8-bit  binary
  378.      files cannot be successfully transferred.
  379.  
  380.    - Conversion is done between Unix newlines and carriage-return-linefeed
  381.      sequences unless the -i option was specified.
  382.  
  383.  
  384. Command Line Examples:
  385.  
  386.  
  387.     kermit -l /dev/ttyi5 -b 1200 -cn -r
  388.  
  389. This command connects you to the system on the other end of ttyi5 at 1200 baud,
  390. where  you  presumably  log in and run Kermit with a 'send' command.  After you
  391. escape back, C-Kermit waits for a file (or files) to arrive.    When  the  file
  392. transfer is completed, you are reconnected to the remote system so that you can
  393. logout.
  394.  
  395.  
  396.     kermit -l /dev/ttyi4 -b 1800 -cntp m -r -a foo
  397.  
  398. This command is like the preceding one, except the remote system in  this  case
  399. uses  half  duplex communication with mark parity.  The first file that arrives
  400. is stored under the name foo.
  401.  
  402.  
  403.  
  404.     kermit -l /dev/ttyi6 -b 9600 -c | tek
  405.  
  406. This example uses Kermit to connect your terminal to the system  at  the  other
  407. end of ttyi6.  The C-Kermit terminal connection does not provide any particular
  408. terminal  emulation,  so  C-Kermit's  standard   i/o   is   piped   through   a
  409. (hypothetical) program called tek, which performs (say) Tektronix emulation.
  410.  
  411.  
  412.     kermit -l /dev/ttyi6 -b 9600 -nf
  413.  
  414. This command would be used to shut down a remote server and then connect to the
  415. remote system, in order to log out or to make further use of it.  The -n option
  416. is invoked after -f (-c would have been invoked before).
  417.  
  418.  
  419.     kermit -l /dev/ttyi6 -b 9600 -qg foo.\* &
  420.  
  421. This  command  causes C-Kermit to be invoked in the background, getting a group
  422. of files from a remote server (note the quoting of the `*' character).  No dis-
  423. play  occurs  on  the  screen, and the keyboard is not sampled for interruption
  424. commands.  This allows other work to be done while file  transfers  proceed  in
  425. the background.
  426.  
  427.  
  428.     kermit -l /dev/ttyi6 -b 9600 -g foo.\* > foo.log < /dev/null &
  429.  
  430. This  command  is  like  the previous one, except the file transfer display has
  431. been redirected to the file foo.log.  Standard input  is  also  redirected,  to
  432. prevent C-Kermit from sampling it for interruption commands.
  433.  
  434.  
  435.     kermit -iwx
  436.  
  437. This  command  starts  up  C-Kermit as a server.  Files are transmitted with no
  438. newline/carriage-return-linefeed conversion; the -i option is necessary for bi-
  439. nary  file transfer and recommended for Unix-to-Unix transfers.  Incoming files
  440. that have the same names as existing files are given new, unique names.
  441.  
  442.  
  443.     kermit -l /dev/ttyi6 -b 9600
  444.  
  445. This command sets the communication  line  and  speed.    Since  no  action  is
  446. specified,  C-Kermit issues a prompt and enters an interactive dialog with you.
  447. Any settings given on the command line remain in force during the  dialog,  un-
  448. less explicitly changed.
  449.  
  450.  
  451.     kermit
  452.  
  453. This command starts up Kermit interactively with all default settings.
  454.  
  455. The  next  example shows how Unix Kermit might be used to send an entire direc-
  456. tory tree from one Unix system to another, using the tar  program  as  Kermit's
  457. standard  input and output.  On the orginating system, in this case the remote,
  458. type (for instance):
  459.  
  460.  
  461.  
  462.     tar cf - /usr/fdc | kermit -is -
  463.  
  464. This causes tar to send the directory /usr/fdc (and all its files and  all  its
  465. subdirectories and all their files...) to standard output instead of to a tape;
  466. kermit receives this as standard input and sends it as a binary file.   On  the
  467. receiving system, in this case the local one, type (for instance):
  468.  
  469.  
  470.     kermit -il /dev/ttyi5 -b 9600 -k | tar xf -
  471.  
  472. Kermit  receives  the  tar archive, and sends it via standard output to its own
  473. copy of tar, which extracts from it a replica of the original directory tree.
  474.  
  475. A final example shows how a Unix compression utility might be used to speed  up
  476. Kermit file transfers:
  477.  
  478.   compress file | kermit -is -     (sender)
  479.   kermit -ik | uncompress          (receiver)
  480.  
  481.  
  482. Exit Status Codes:
  483.  
  484. Unix  Kermit  returns  an exit status of zero, except when a fatal error is en-
  485. countered, where the exit status is set to  one.    With  background  operation
  486. (e.g., `&' at end of invoking command line) driven by scripted interactive com-
  487. mands (redirected standard input and/or take  files),  any  failed  interactive
  488. command (such as failed dial or script attempt) causes the fatal error exit.
  489.  
  490.  
  491. 9.4. Interactive Operation
  492.  
  493. C-Kermit's  interactive  command  prompt  is  "C-Kermit>".  In response to this
  494. prompt, you may type any valid command.  C-Kermit executes the command and then
  495. prompts  you for another command.  The process continues until you instruct the
  496. program to terminate.
  497.  
  498. Commands begin with a keyword, normally an English verb, such as "send".    You
  499. may  omit  trailing  characters  from  any keyword, so long as you specify suf-
  500. ficient characters to distinguish it from  any  other  keyword  valid  in  that
  501. field.    Certain commonly-used keywords (such as "send", "receive", "connect")
  502. also have special non-unique abbreviations ("s" for "send", "r" for  "receive",
  503. "c" for "connect").
  504.  
  505. Certain  characters  have  special  functions during typein of interactive com-
  506. mands:
  507.  
  508.     ?   Question mark, typed at any point in a command, will produce a  message
  509.         explaining  what  is  possible or expected at that point.  Depending on
  510.         the context, the message may be a brief phrase, a menu of keywords,  or
  511.         a list of files.
  512.  
  513.     ESC (The  Escape  or  Altmode  key)  --  Request  completion of the current
  514.         keyword or filename, or insertion of a default value.  The result  will
  515.         be a beep if the requested operation fails.
  516.  
  517.     DEL (The  Delete  or  Rubout key) -- Delete the previous character from the
  518.  
  519.  
  520.  
  521.         command.  You may also use BS (Backspace, Control-H) for this function.
  522.  
  523.     ^W  (Control-W) -- Erase the rightmost word from the command line.
  524.  
  525.     ^U  (Control-U) -- Erase the entire command.
  526.  
  527.     ^R  (Control-R) -- Redisplay the current command.
  528.  
  529.     SP  (Space) -- Delimits fields (keywords, filenames, numbers) within a com-
  530.         mand.  HT (Horizontal Tab) may also be used for this purpose.
  531.  
  532.     CR  (Carriage  Return)  -- Enters the command for execution.  LF (Linefeed)
  533.         or FF (formfeed) may also be used for this purpose.
  534.  
  535.     \   (Backslash) -- Enter any of the  above  characters  into  the  command,
  536.         literally.    To enter a backslash, type two backslashes in a row (\\).
  537.         A backslash at the end of a command line causes the  next  line  to  be
  538.         treated  as a continuation line; this is useful for readability in com-
  539.         mand files, especially in the 'script' command.
  540.  
  541. You may type the editing characters (DEL, ^W, etc) repeatedly,  to  delete  all
  542. the  way  back to the prompt.  No action will be performed until the command is
  543. entered by typing carriage return, linefeed, or formfeed.  If you make any mis-
  544. takes,  you  will receive an informative error message and a new prompt -- make
  545. liberal use of `?' and ESC to feel your way through the commands.   One  impor-
  546. tant command is "help" -- you should use it the first time you run C-Kermit.
  547.  
  548. A command line beginning with a percent sign "%" is ignored.  Such lines may be
  549. used to include illustrative commentary in Kermit command dialogs.
  550.  
  551. Interactive C-Kermit accepts commands from files as well as from the  keyboard.
  552. When  you enter interactive dialog, C-Kermit looks for the file .kermrc in your
  553. home or current directory (first it looks in the home directory,  then  in  the
  554. current  one) and executes any commands it finds there.  These commands must be
  555. in interactive format, not Unix command-line format (the initialization file is
  556. not  processed  if  you  invoke Kermit with command-line action arguments, such
  557. that it does not enter interactive dialog).  A "take" command is also  provided
  558. for  use at any time during an interactive session, to allow interactive-format
  559. commands to be executed from a file; command files may be nested to any reason-
  560. able depth.
  561.  
  562. Here is a brief list of C-Kermit interactive commands:
  563.  
  564.               !  Execute a Unix shell command, or start a shell.
  565.             bye  Terminate and log out a remote Kermit server.
  566.           close  Close a log file.
  567.         connect  Establish a terminal connection to a remote system.
  568.             cwd  Change Working Directory.
  569.            dial  Dial a telephone number.
  570.       directory  Display a directory listing.
  571.            echo  Display arguments literally.
  572.            exit  Exit from the program, closing any open files.
  573.          finish  Instruct a remote Kermit server to exit, but not log out.
  574.             get  Get files from a remote Kermit server.
  575.            help  Display a help message for a given command.
  576.             log  Open a log file -- debugging, packet, session, transaction.
  577.  
  578.  
  579.  
  580.            quit  Same as 'exit'.
  581.         receive  Passively wait for files to arrive.
  582.          remote  Issue file management commands to a remote Kermit server.
  583.          script  Execute a login script with a remote system.
  584.            send  Send files.
  585.          server  Begin server operation.
  586.             set  Set various parameters.
  587.            show  Display values of 'set' parameters.
  588.           space  Display current disk space usage.
  589.      statistics  Display statistics about most recent transaction.
  590.            take  Execute commands from a file.
  591.  
  592. The 'set' parameters are:
  593.  
  594.     block-check  Level of packet error detection.
  595.           delay  How long to wait before sending first packet.
  596.          duplex  Specify which side echoes during 'connect'.
  597.     escape-character  Prefix for "escape commands" during 'connect'.
  598.            file  Set various file parameters.
  599.    flow-control  Communication line full-duplex flow control.
  600.       handshake  Communication line half-duplex turnaround character.
  601.      incomplete  Disposition for incompletely received files.
  602.            line  Communication line device name.
  603.    modem-dialer  Type of modem-dialer on communication line.
  604.          parity  Communication line character parity.
  605.          prompt  The C-Kermit program's interactive command prompt.
  606.         receive  Parameters for inbound packets.
  607.            send  Parameters for outbound packets.
  608.           speed  Communication line speed.
  609.  
  610. The 'remote' commands are:
  611.  
  612.             cwd  Change remote working directory.
  613.          delete  Delete remote files.
  614.       directory  Display a listing of remote file names.
  615.            help  Request help from a remote server.
  616.            host  Issue a command to the remote host in its own command language
  617.           space  Display current disk space usage on remote system.
  618.            type  Display a remote file on your screen.
  619.             who  Display who's logged in, or get information about a user.
  620.  
  621. Most of these commands are described adequately in the Kermit User Guide.  Spe-
  622. cial aspects of certain Unix Kermit commands are described below.
  623.  
  624.  
  625.                               THE 'SEND' COMMAND
  626.  
  627. Syntax:  send fn  - or -  send fn1 rfn1
  628.  
  629. Send the file or files denoted by fn to the other Kermit, which should be  run-
  630. ning as a server, or which should be given the 'receive' command.  Each file is
  631. sent under its own name (as described above, or as specified by the  'set  file
  632. names'  command).  If the second form of the 'send' command is used, i.e.  with
  633. fn1 denoting a single Unix file, rfn1 may be specified as a name to send it un-
  634. der.    The  'send' command may be abbreviated to 's', even though 's' is not a
  635. unique abbreviation for a top-level C-Kermit command.
  636.  
  637.  
  638.  
  639. The wildcard (meta) characters `*' and `?' are accepted in fn.  If `?' is to be
  640. included, it must be prefixed by `\' to override its normal function of provid-
  641. ing help.  `*' matches any string, `?' matches any  single  character.    Other
  642. notations  for  file  groups,  like `[a-z]og', are not available in interactive
  643. commands (though of course they are available on the command line).    When  fn
  644. contains  `*'  or  `?' characters, there is a limit to the number of files that
  645. can be matched, which varies from system to system.  If  you  get  the  message
  646. "Too many files match" then you'll have to make a more judicious selection.  If
  647. fn was of the form 
  648.  
  649.   usr/longname/anotherlongname/*
  650.  
  651. then C-Kermit's string space will fill up rapidly  --  try  doing  a  cwd  (see
  652. below) to the path in question and reissuing the command.
  653.  
  654. Note  --  C-Kermit sends only from the current or specified directory.  It does
  655. not traverse directory trees.  If the source directory contains subdirectories,
  656. they  will be skipped.  By the same token, C-Kermit does not create directories
  657. when receiving files.  If you have a need to do this, you can pipe tar  through
  658. C-Kermit,  as  shown in the example on page 125, or under System III/V Unix you
  659. can use cpio.
  660.  
  661. Another Note -- C-Kermit does not skip over "invisible" files  that  match  the
  662. file  specification;  Unix systems usually treat files whose names start with a
  663. dot (like .login, .cshrc, and .kermrc) as invisible.  Similarly for "temporary"
  664. files whose names start with "#".
  665.  
  666.  
  667.                              THE 'RECEIVE' COMMAND
  668.  
  669. Syntax:  receive  - or -  receive fn1
  670.  
  671. Passively  wait  for files to arrive from the other Kermit, which must be given
  672. the 'send' command -- the 'receive' command does not work in conjunction with a
  673. server  (use  'get'  for  that).  If fn1 is specified, store the first incoming
  674. file under that name.  The 'receive' command may be abbreviated to 'r'.
  675.  
  676.  
  677.                               THE 'GET' COMMAND:
  678.  
  679. Syntax:  get rfn
  680.  
  681.       or: get
  682.               rfn
  683.               fn1
  684.  
  685. Request a remote Kermit server to send the named file or files.  Since a remote
  686. file  specification  (or  list)  might  contain  spaces, which normally delimit
  687. fields of a C-Kermit command, an alternate form of the command is  provided  to
  688. allow  the inbound file to be given a new name: type 'get' alone on a line, and
  689. you will be prompted separately for the remote and local  file  specifications,
  690. for example
  691.  
  692.   C-Kermit>get
  693.    Remote file specification: profile exec
  694.    Local name to store it under: profile.exec
  695.  
  696.  
  697.  
  698. As  with 'receive', if more than one file arrives as a result of the 'get' com-
  699. mand, only the first will be stored under the alternate name given by fn1;  the
  700. remaining  files will be stored under their own names if possible.  If a `?' is
  701. to be included in the remote file specification, you must prefix it with `\' to
  702. suppress its normal function of providing help.
  703.  
  704. If  you  have started a multiline 'get' command, you may escape from its lower-
  705. level prompts by typing a carriage return in response to the prompt, e.g.
  706.  
  707.   C-Kermit>get
  708.    Remote file specification: foo
  709.    Local name to store it under: (Type a carriage return here)
  710.   (cancelled)
  711.   C-Kermit>
  712.  
  713.  
  714.                              THE 'SERVER' COMMAND:
  715.  
  716. The 'server' command places C-Kermit in "server mode" on the currently selected
  717. communication  line.   All further commands must arrive as valid Kermit packets
  718. from the Kermit on the other end of the line.    The  Unix  Kermit  server  can
  719. respond to the following commands:
  720.  
  721. Command                Server Response
  722.   get                    Sends files
  723.   send                   Receives files
  724.   bye                    Attempts to log itself out
  725.   finish                 Exits to level from which it was invoked
  726.   remote directory       Sends directory lising
  727.   remote delete          Removes files
  728.   remote cwd             Changes working directory
  729.   remote type            Sends files to your screen
  730.   remote space           Reports about its disk usage
  731.   remote who             Shows who's logged in
  732.   remote host            Executes a Unix shell command
  733.   remote help            Lists these capabilities
  734.  
  735. Note  that  the  Unix Kermit server cannot always respond to a BYE command.  It
  736. will attempt to do so using "kill()", but this will not work on all systems  or
  737. under all conditions.
  738.  
  739. If  the  Kermit  server  is  directed at an external line (i.e. it is in "local
  740. mode") then the console may be used for other work if you have 'set  file  dis-
  741. play  off'; normally the program expects the console to be used to observe file
  742. transfers and enter status queries or interruption commands.  The  way  to  get
  743. C-Kermit  into  background operation from interactive command level varies from
  744. system to system (e.g. on Berkeley Unix you would halt the program with ^Z  and
  745. then  use the C-Shell 'bg' command to continue it in the background).  The more
  746. common method is to invoke the program with the desired command line arguments,
  747. including "-q", and with a terminating "&".
  748.  
  749. When  the  Unix  Kermit server is given a 'remote host' command, it executes it
  750. using the shell invoked upon login, e.g.  the  Bourne  shell  or  the  Berkeley
  751. C-Shell.
  752.  
  753.  
  754.  
  755.                   THE 'REMOTE', 'BYE', AND 'FINISH' COMMANDS:
  756.  
  757. C-Kermit  may itself request services from a remote Kermit server.  In addition
  758. to 'send' and 'get', the following commands may also be sent from C-Kermit to a
  759. Kermit server:
  760.  
  761.     remote cwd [directory]
  762.         If the optional remote directory specification is included, you will be
  763.         prompted  on a separate line for a password, which will not echo as you
  764.         type it.
  765.  
  766.     remote delete rfn       delete remote file or files.
  767.     remote directory [rfn]  directory listing of remote files.
  768.     remote host command     command in remote host's own command language.
  769.     remote space            disk usage report from remote host.
  770.     remote type [rfn]       display remote file or files on the screen.
  771.     remote who [user]       display information about who's logged in.
  772.     remote help             display remote server's capabilities.
  773.  
  774.     bye and finish:
  775.         When  connected  to  a  remote  Kermit server, these commands cause the
  776.         remote server to terminate; 'finish' returns it  to  Kermit  or  system
  777.         command  level  (depending on the implementation or how the program was
  778.         invoked); 'bye' also requests it to log itself out.
  779.  
  780.  
  781.                         THE 'LOG' AND 'CLOSE' COMMANDS:
  782.  
  783. Syntax: log {debugging, packets, session, transactions} [ fn1 ]
  784.  
  785. C-Kermit's progress may be logged in various ways.  The 'log' command  opens  a
  786. log,  the  'close' command closes it.  In addition, all open logs are closed by
  787. the 'exit' and 'quit' commands.  A name may be specified for a log file; if the
  788. name is omitted, the file is created with a default name as shown below.
  789.  
  790. log debugging
  791.     This produces a voluminous log of the internal workings of C-Kermit, of use
  792.     to  Kermit developers or maintainers in tracking down suspected bugs in the
  793.     C-Kermit program.  Use of this feature dramatically slows down  the  Kermit
  794.     protocol.  Default name: debug.log.
  795.  
  796. log packets
  797.     This produces a record of all the packets that go in and out  of  the  com-
  798.     munication port.  This log is of use to Kermit maintainers who are tracking
  799.     down protocol problems in either C-Kermit or any Kermit  that  C-Kermit  is
  800.     connected to.  Default name:  packet.log.
  801.  
  802. log session
  803.     This log will contain a copy of everything you see on  your  screen  during
  804.     the  'connect' command, except for local messages or interaction with local
  805.     escape commands.  Default name:  session.log.
  806.  
  807. log transactions
  808.     The transaction log is a record of all the files that were sent or received
  809.     while transaction logging was in effect.    It  includes  time  stamps  and
  810.     statistics,  filename  transformations,  and records of any errors that may
  811.  
  812.  
  813.  
  814.     have occurred.  The transaction log allows you to have long unattended file
  815.     transfer  sessions  without  fear  of  missing  some  vital screen message.
  816.     Default name:  transact.log.
  817.  
  818. The 'close' command explicitly closes a log, e.g. 'close debug'.
  819.  
  820. Note:  Debug and Transaction logs are a compile-time option;  C-Kermit  may  be
  821. compiled  without these logs, in which case it will run faster, it will take up
  822. less space on the disk, and the commands relating to them will not be present.
  823.  
  824.  
  825.                         LOCAL FILE MANAGEMENT COMMANDS:
  826.  
  827. Unix Kermit allows some degree of local file management from  interactive  com-
  828. mand level:
  829.  
  830. directory [fn]
  831.     Displays a listing of the names, modes, sizes, and dates of files  matching
  832.     fn (which defaults to `*').  Equivalent to `ls -l'.
  833.  
  834. cwd [directory-name]
  835.     Changes Kermit's working directory to the one  given,  or  to  the  default
  836.     directory  if the directory name is omitted.  This command affects only the
  837.     Kermit process and any processes it may subsequently create.
  838.  
  839. space
  840.     Display  information about disk space and/or quota in the current directory
  841.     and device.
  842.  
  843. ! [command]
  844.     The  command  is  executed  by the Unix shell.  If no command is specified,
  845.     then an interactive shell is started;  exiting  from  the  shell,  e.g.  by
  846.     typing Control-D or 'exit', will return you to C-Kermit command level.  Use
  847.     the `!' command to provide file  management  or  other  functions  not  ex-
  848.     plicitly  provided  by  C-Kermit  commands.    The  `!' command has certain
  849.     peculiarities:
  850.  
  851.        - C-Kermit attempts to use your preferred, customary (login) shell.
  852.        - At least one space must separate the '!' from the shell command.
  853.        - A 'cd' (change directory) command executed in  this  manner  will
  854.          have no effect -- use the C-Kermit 'cwd' command instead.
  855.  
  856.  
  857.                         THE 'SET' AND 'SHOW' COMMANDS:
  858.  
  859. Since  Kermit  is designed to allow diverse systems to communicate, it is often
  860. necessary to issue special instructions  to  allow  the  program  to  adapt  to
  861. peculiarities  of the another system or the communication path.  These instruc-
  862. tions are accomplished by the 'set' command.  The 'show' command may be used to
  863. display  current  settings.   Here is a brief synopsis of settings available in
  864. the current release of C-Kermit:
  865.  
  866. block-check {1, 2, 3}
  867.     Determines  the  level  of  per-packet  error  detection.  "1" is a single-
  868.     character 6-bit checksum, folded to include the values  of  all  bits  from
  869.     each  character.    "2"  is  a  2-character,  12-bit  checksum.    "3" is a
  870.  
  871.  
  872.  
  873.     3-character, 16-bit cyclic redundancy check (CRC).  The  higher  the  block
  874.     check,  the  better  the  error detection and correction and the higher the
  875.     resulting overhead.  Type 1 is most commonly used; it is supported  by  all
  876.     Kermit  implementations,  and it has proven adequate in most circumstances.
  877.     Types 2 or 3 would be used to  advantage  when  transferring  8-bit  binary
  878.     files over noisy lines.
  879.  
  880. delay n
  881.     How many seconds to wait before sending the first  packet  after  a  'send'
  882.     command.  Used in remote mode to give you time to escape back to your local
  883.     Kermit and issue a 'receive' command.  Normally 5 seconds.
  884.  
  885. duplex {full, half}
  886.     For  use  during  'connect'.    Specifies  which side is doing the echoing;
  887.     'full' means the other side, 'half' means C-Kermit must echo typein itself.
  888.  
  889. escape-character cc
  890.     For use during 'connect' to get C-Kermit's attention.  The escape character
  891.     acts as a prefix to an 'escape command', for instance to close the  connec-
  892.     tion  and  return  to  C-Kermit  or  Unix command level.  The normal escape
  893.     character is Control-Backslash (28).  The escape character is also used  in
  894.     System  III/V  implementations  to  prefix  interrupt  commands during file
  895.     transfers.
  896.  
  897. file {display, names, type, warning}
  898.     Establish various file-related parameters:
  899.  
  900.     display {on, off}
  901.         Normally 'on'; when in local mode, display progress of  file  transfers
  902.         on  the  screen (stdout), and listen to the keyboard (stdin) for inter-
  903.         ruptions.  If off (-q on command line) none of this is  done,  and  the
  904.         file transfer may proceed in the background oblivious to any other work
  905.         concurrently done at the console terminal.
  906.  
  907.     names {converted, literal}
  908.         Normally  converted,  which  means  that  outbound  filenames have path
  909.         specifications stripped, lowercase letters raised to upper, tildes  and
  910.         extra  periods  changed  to X's, and an X inserted in front of any name
  911.         that starts  with  period.    Incoming  files  have  uppercase  letters
  912.         lowered.  Literal means that none of these conversions are done; there-
  913.         fore, any directory path appearing in  a  received  file  specification
  914.         must exist and be write-accessible.  When literal naming is being used,
  915.         the sender should not use path names in the file  specification  unless
  916.         the same path exists on the target system and is writable.
  917.  
  918.     type {binary, text}
  919.         Normally text, which means that conversion is done between Unix newline
  920.         characters  and  the carriage-return/linefeed sequences required by the
  921.         canonical Kermit file transmission format, and in common  use  on  non-
  922.         Unix  systems.   Binary means to transmit file contents without conver-
  923.         sion.  Binary (`-i' in command line notation) is necessary  for  binary
  924.         files,  and  desirable  in all Unix-to-Unix transactions to cut down on
  925.         overhead.
  926.  
  927.     warning {on, off}
  928.         Normally  off,  which means that incoming files will silently overwrite
  929.  
  930.  
  931.  
  932.         existing files of the same name.  When on (`-w' on command line) Kermit
  933.         will check if an arriving file would overwrite an existing file; if so,
  934.         it will construct a new name for the arriving file, of the form  foo~n,
  935.         where foo is the name they share and n is a "generation number"; if foo
  936.         exists, then the new file will be called foo~1.  If foo and  foo~1  ex-
  937.         ist,  the  new file will be foo~2, and so on.  If the new name would be
  938.         longer than the maximum length for a filename, then characters would be
  939.         deleted  from  the  end first, for instance, thelongestname on a system
  940.         with a limit of 14 characters would become thelongestn~1.
  941.  
  942.             CAUTION:  If Control-F or Control-B is used to cancel an incom-
  943.             ing  file,  and a file of the same name previously existed, and
  944.             the "file warning" feature is not enabled,  then  the  previous
  945.             copy of the file will disappear.
  946.  
  947. flow-control {none, xon/xoff}
  948.     Normally xon/xoff for full duplex flow control.  Should be set to 'none' if
  949.     the  other  system cannot do xon/xoff flow control, or if you have issued a
  950.     'set handshake' command.  If set to xon/xoff, then handshake should be  set
  951.     to  none.    This  setting applies during both terminal connection and file
  952.     transfer.  Warning: This command may have no effect on  certain  Unix  sys-
  953.     tems,  where Kermit puts the communication line into 'rawmode', and rawmode
  954.     precludes flow control.
  955.  
  956. incomplete {discard, keep}
  957.     Disposition for incompletely received files.  If an incoming file is inter-
  958.     rupted or an error occurs during transfer, the part that  was  received  so
  959.     far  is  normally  discarded.   If you "set incomplete keep" then such file
  960.     fragments will be kept.
  961.  
  962. handshake {xon, xoff, cr, lf, bell, esc, none}
  963.     Normally  none.  Otherwise, half-duplex communication line turnaround hand-
  964.     shaking is done, which means Unix Kermit will not reply to a  packet  until
  965.     it  has received the indicated handshake character or has timed out waiting
  966.     for it; the handshake setting applies only during file transfer.    If  you
  967.     set handshake to other than none, then flow should be set to none.
  968.  
  969. line [device-name]
  970.     The device name for the communication line to be used for file transfer and
  971.     terminal connection, e.g. /dev/ttyi3.  If you specify a device name, Kermit
  972.     will be in local mode, and you should remember to issue any other necessary
  973.     'set'  commands,  such as 'set speed'.  If you omit the device name, Kermit
  974.     will revert to its default mode of operation.   If  you  specify  /dev/tty,
  975.     Kermit  will  enter  remote  mode  (useful when logged in through the "back
  976.     port" of a system normally used as a local-mode workstation).    When  Unix
  977.     Kermit  enters  local  mode, it attempts to synchronize with other programs
  978.     (like uucp) that use external communication lines  so  as  to  prevent  two
  979.     programs  using  the  same  line  at  once;  before  attempting to lock the
  980.     specified line, it will  close  and  unlock  any  external  line  that  was
  981.     previously  in  use.   The method used for locking is the "uucp lock file",
  982.     explained in more detail later.
  983.  
  984. modem-dialer {direct, hayes, racalvadic, ventel, ...}
  985.     The type of modem dialer on the communication line.  "Direct" indicates ei-
  986.     ther there is no dialout modem, or that if the line requires carrier detec-
  987.     tion  to  open,  then  'set  line'  will hang waiting for an incoming call.
  988.  
  989.  
  990.  
  991.     "Hayes", "Ventel", and the others indicate  that  'set  line'  (or  the  -l
  992.     argument)  will  prepare  for  a  subsequent  'dial'  command for the given
  993.     dialer.  Support for new dialers is added from time to time, so  type  'set
  994.     modem  ?'  for  a  list of those supported in your copy of Kermit.  See the
  995.     description of the 'dial' command
  996.  
  997. parity {even, odd, mark, space, none}
  998.     Specify  character  parity for use in packets and terminal connection, nor-
  999.     mally none.  If other than none, C-Kermit will  seek  to  use  the  8th-bit
  1000.     prefixing  mechanism  for transferring 8-bit binary data, which can be used
  1001.     successfully only if the other Kermit agrees; if  not,  8-bit  binary  data
  1002.     cannot be successfully transferred.
  1003.  
  1004. prompt [string]
  1005.     The given string will be substituted  for  "C-Kermit>"  as  this  program's
  1006.     prompt.    If the string is omitted, the prompt will revert to "C-Kermit>".
  1007.     If the string is enclosed in doublequotes, the quotes will be stripped  and
  1008.     any leading and trailing blanks will be retained.
  1009.  
  1010. send parameter
  1011.     Establish parameters to use when sending packets.  These will be in  effect
  1012.     only for the initial packet sent, since the other Kermit may override these
  1013.     parameters during the protocol parameter exchange (unless noted below).
  1014.  
  1015.     end-of-packet cc
  1016.         Specifies the control character needed by the other Kermit to recognize
  1017.         the end of a packet.  C-Kermit sends this character at the end of  each
  1018.         packet.    Normally  13  (carriage return), which most Kermit implemen-
  1019.         tations require.  Other Kermits require no  terminator  at  all,  still
  1020.         others may require a different terminator, like linefeed (10).
  1021.  
  1022.     packet-length n
  1023.         Specify the maximum packet length to  send.    Normally  90.    Shorter
  1024.         packet  lengths  can be useful on noisy lines, or with systems or front
  1025.         ends or networks that have small buffers.  The shorter the packet,  the
  1026.         higher  the  overhead,  but the lower the chance of a packet being cor-
  1027.         rupted by noise, and the less time  to  retransmit  corrupted  packets.
  1028.         This  command  overrides the value requested by the other Kermit during
  1029.         protocol initiation.
  1030.  
  1031.     pad-character cc
  1032.         Designate  a  character  to send before each packet.  Normally, none is
  1033.         sent.  Outbound padding is sometimes necessary for  communicating  with
  1034.         slow half duplex systems that provide no other means of line turnaround
  1035.         control.  It can also be used to send special characters to  communica-
  1036.         tions  equipment  that  needs  to  be put in "transparent" or "no echo"
  1037.         mode, when this can be accomplished in by feeding it a certain  control
  1038.         character.
  1039.  
  1040.     padding n
  1041.         How many pad characters to send, normally 0.
  1042.  
  1043.     start-of-packet cc
  1044.         The  normal Kermit packet prefix is Control-A (1); this command changes
  1045.         the prefix C-Kermit puts on outbound packets.  The  only  reasons  this
  1046.         should  ever be changed would be: Some piece of equipment somewhere be-
  1047.  
  1048.  
  1049.  
  1050.         tween the two Kermit programs will not pass through  a  Control-A;  or,
  1051.         some  piece  of of equipment similarly placed is echoing its input.  In
  1052.         the latter case, the recipient of such an echo can  change  the  packet
  1053.         prefix for outbound packets to be different from that of arriving pack-
  1054.         ets, so that the echoed packets will be ignored.  The  opposite  Kermit
  1055.         must also be told to change the prefix for its inbound packets.
  1056.  
  1057.     timeout n
  1058.         Specifies the number of seconds you want the other Kermit to wait for a
  1059.         packet before timing it out and requesting retransmission.
  1060.  
  1061. receive parameter
  1062.     Establish parameters to request the other Kermit to use when sending  pack-
  1063.     ets.
  1064.  
  1065.     end-of-packet cc
  1066.         Requests the other Kermit to terminate its packets with  the  specified
  1067.         character.
  1068.  
  1069.     packet-length n
  1070.         Specify the maximum packet length to that you want the other Kermit  to
  1071.         send.  Normally 90.
  1072.  
  1073.     pad-character cc
  1074.         C-Kermit normally does not need to have incoming packets preceded  with
  1075.         pad characters.  This command allows C-Kermit to request the other Ker-
  1076.         mit to use cc as a pad character.  Default cc is NUL, ASCII 0.
  1077.  
  1078.     padding n
  1079.         How many pad characters to ask for, normally 0.
  1080.  
  1081.     start-of-packet cc
  1082.         Change the prefix C-Kermit looks for on inbound packets  to  correspond
  1083.         with what the other Kermit is sending.
  1084.  
  1085.     timeout n
  1086.         Normally, each Kermit partner sets its packet timeout interval based on
  1087.         what the opposite Kermit requests.  This command allows you to override
  1088.         the normal procedure and specify a timeout interval for Unix Kermit  to
  1089.         use  when waiting for packets from the other Kermit.  If you specify 0,
  1090.         then no timeouts will occur, and Unix Kermit will wait forever for  ex-
  1091.         pected packets to arrive.
  1092.  
  1093. speed {0, 110, 150, 300, 600, 1200, 1800, 2400, 4800, 9600}
  1094.     The baud rate for the external communication line.  This command cannot  be
  1095.     used  to  change the speed of your own console terminal.  Many Unix systems
  1096.     are set up in such a way that you must give this command after a 'set line'
  1097.     command  before  you  can  use  the line.  'set baud' is a synomym for 'set
  1098.     speed'.
  1099.  
  1100.  
  1101.  
  1102.                               THE 'SHOW' COMMAND:
  1103.  
  1104. Syntax: show {parameters, versions}
  1105.  
  1106. The "show" command with the  default  argument  of  "parameters"  displays  the
  1107. values  of  all  the  'set'  parameters  described  above.    If you type "show
  1108. versions", then C-Kermit will display the version numbers and dates of all  its
  1109. internal  modules.  You should use the "show versions" command to ascertain the
  1110. vintage of your Kermit program before reporting problems to Kermit maintainers.
  1111.  
  1112.  
  1113.                            THE 'STATISTICS' COMMAND:
  1114.  
  1115. The statistics command  displays  information  about  the  most  recent  Kermit
  1116. protocol transaction, including file and communication line i/o, timing and ef-
  1117. ficiency, as well as what encoding options were  in  effect  (such  as  8th-bit
  1118. prefixing, repeat-count compression).
  1119.  
  1120.  
  1121.                         THE 'TAKE' AND 'ECHO' COMMANDS:
  1122.  
  1123. Syntax: take fn1
  1124.      echo [text to be echoed]
  1125.  
  1126. The  'take' command instructs C-Kermit to execute commands from the named file.
  1127. The file may contain any interactive C-Kermit commands, including 'take';  com-
  1128. mand  files  may  be nested to any reasonable depth.  The 'echo' command may be
  1129. used within command files to issue greetings, announce progress, ring the  ter-
  1130. minal bell, etc.
  1131.  
  1132. The  'echo'  command should not be confused with the Unix 'echo' command, which
  1133. can be used to show how meta characters would be expanded.    The  Kermit  echo
  1134. command  simply  displays its text argument (almost) literally at the terminal;
  1135. the argument may contain octal escapes of the form "\ooo", where o is an  octal
  1136. digit  (0-7),  and  there may be 1, 2, or 3 such digits, whose value specify an
  1137. ASCII character, such as "\007" (or "\07" or just "\7") for  beep,  "\012"  for
  1138. newline, etc.  Of course, each backslash must be must be entered twice in order
  1139. for it to be passed along to the echo command by the Kermit command parser.
  1140.  
  1141. Take-command files are in exactly the  same  syntax  as  interactive  commands.
  1142. Note  that  this  implies  that  if you want to include special characters like
  1143. question mark or backslash that you would have to  quote  with  backslash  when
  1144. typing  interactive  commands,  you must quote these characters the same way in
  1145. command files.  Long lines may be continued by ending them with a single  back-
  1146. slash.
  1147.  
  1148. Command files may be used in lieu of command macros, which have not been imple-
  1149. mented in this version of C-Kermit.  For instance, if you commonly connect to a
  1150. system  called  'B' that is connected to ttyh7 at 4800 baud, you could create a
  1151. file called b containing the commands
  1152.  
  1153.   % C-Kermit command file to connect to System B thru /dev/ttyh7
  1154.   set line /dev/ttyh7
  1155.   set speed 4800
  1156.   % Beep and give message
  1157.   echo \\007Connecting to System B...
  1158.  
  1159.  
  1160.  
  1161.   connect
  1162.  
  1163. and then simply type 'take b' (or 't b' since no other commands begin with  the
  1164. letter  't')  whenever  you wish to connect to system B. Note the comment lines
  1165. and the beep inserted into the 'echo' command.
  1166.  
  1167. For connecting to IBM mainframes, a number  of  'set'  commands  are  required;
  1168. these, too, are conveniently collected into a 'take' file like this one:
  1169.  
  1170.   % Sample C-Kermit command file to set up current line
  1171.   % for IBM mainframe communication
  1172.   %
  1173.   set parity mark
  1174.   set handshake xon
  1175.   set flow-control none
  1176.   set duplex half
  1177.  
  1178. Note  that no single command is available to wipe out all of these settings and
  1179. return C-Kermit to its default startup state; to do that, you can  either  res-
  1180. tart the program, or else make a command file that executes the necessary 'set'
  1181. commands:
  1182.  
  1183.   % Sample C-Kermit command file to restore normal settings
  1184.   %
  1185.   set parity none
  1186.   set handshake none
  1187.   set flow-control xon/xoff
  1188.   set duplex full
  1189.  
  1190. An implicit 'take' command is executed upon your .kermrc file  upon  C-Kermit's
  1191. initial  entry  into interactive dialog.  The .kermrc file should contain 'set'
  1192. or other commands you want to be in effect at all times.    For  instance,  you
  1193. might  want override the default action when incoming files have the same names
  1194. as existing files -- in that case, put the command 
  1195.  
  1196.   set file warning on
  1197.  
  1198. in your .kermrc file.  On some non-Unix systems that run  C-Kermit,  this  file
  1199. might have a different name, such as kermit.ini.
  1200.  
  1201.     NOTE:  The  initialization file is currently not processed if Kermit is
  1202.     invoked with an action command from the command line.  The same  effect
  1203.     can  be achieved, however, by defining an alias or shell procedure that
  1204.     starts up Kermit with the desired command line options.
  1205.  
  1206. Commands executed from take files are not echoed at the terminal.  If you  want
  1207. to see the commands as well as their output, you could feed the command file to
  1208. C-Kermit via redirected stdin, as in 
  1209.  
  1210.   'kermit < cmdfile'
  1211.  
  1212. Errors encountered during execution of take files (such as failure to  complete
  1213. dial  or script operations) cause termination of the current take file, popping
  1214. to the level that invoked it (take file,  interactive  level,  or  the  shell).
  1215. When  kermit  is  executed in the background, errors during execution of a take
  1216. file are fatal.
  1217.  
  1218.  
  1219.  
  1220.                             THE 'CONNECT' COMMAND:
  1221.  
  1222. The connect command links your terminal to another computer as if it were a lo-
  1223. cal  terminal to that computer, through the device specified in the most recent
  1224. 'set line' command, or through the default device if your system  is  a  PC  or
  1225. workstation.    All  characters you type at your keyboard are sent out the com-
  1226. munication line, all characters arriving at the  communication  port  are  dis-
  1227. played  on  your  screen.  Current settings of speed, parity, duplex, and flow-
  1228. control are honored.  If you have issued a 'log  session'  command,  everything
  1229. you  see  on  your  screen  will  also  be  recorded to your session log.  This
  1230. provides a way to "capture" files from systems that don't have Kermit  programs
  1231. available.
  1232.  
  1233. To  get  back  to your own system, you must type the escape character, which is
  1234. Control-Backslash (^\) unless you have changed it with the  'set  escape'  com-
  1235. mand,   followed  by  a  single-character  command,  such  as  'c'  for  "close
  1236. connection".  Single-character commands include:
  1237.  
  1238.   c     Close the connection
  1239.   b     Send a BREAK signal
  1240.   0     (zero) send a null
  1241.   s     Give a status report about the connection
  1242.   h     Hangup the phone
  1243.   ^\    Send Control-Backslash itself (whatever you  have  defined  the  escape
  1244.         character to be, typed twice in a row sends one copy of it).
  1245.  
  1246. Uppercase and control equivalents for these letters are also accepted.  A space
  1247. typed after the escape character is ignored.  Any other character will  produce
  1248. a beep.
  1249.  
  1250. The  connect  command simply displays incoming characters on the screen.  It is
  1251. assumed any screen control sequences sent by the host will be  handled  by  the
  1252. firmware  in  your  terminal or PC.  If terminal emulation is desired, then the
  1253. connect command can invoked from the  Unix  command  line  (-c  or  -n),  piped
  1254. through a terminal emulation filter, e.g.  
  1255.  
  1256.   kermit -l /dev/acu -b 1200 -c | tek
  1257.  
  1258. 'c' is an acceptable non-unique abbreviation for 'connect'.
  1259.  
  1260.  
  1261.                               THE 'DIAL' COMMAND:
  1262.  
  1263. Syntax: dial telephone-number-string
  1264.  
  1265. This  command  controls  dialout  modems; you should have already issued a "set
  1266. line" and "set speed" command to identify  the  terminal  device,  and  a  "set
  1267. modem"  command  to  identify the type of modem to be used for dialing.  In the
  1268. "dial" command, you supply the phone number and the Kermit program feeds it  to
  1269. the modem in the appropriate format and then interprets dialer return codes and
  1270. modem signals to inform you whether the call was  completed.    The  telephone-
  1271. number-string  may  contain  imbedded  modem-dialer commands, such as comma for
  1272. Hayes pause, or `&' for Ventel dialtone wait and `%' for Ventel pause  (consult
  1273. your modem manual for details).
  1274.  
  1275. At the time of this writing, support is included for the following modems:
  1276.  
  1277.  
  1278.  
  1279.    - Cermetek Info-Mate 212A
  1280.    - DEC DF03-AC
  1281.    - DEC DF100 Series
  1282.    - DEC DF200 Series
  1283.    - General DataComm 212A/ED
  1284.    - Hayes Smartmodem 1200 and compatibles
  1285.    - Penril
  1286.    - Racal Vadic
  1287.    - US Robotics 212A
  1288.    - Ventel
  1289.  
  1290. Support for new modems is added to the program from time to time; you can check
  1291. the current list by typing "set modem ?".
  1292.  
  1293. The device used for dialing out is the one selected in  the  most  recent  "set
  1294. line"  command  (or on a workstation, the default line if no "set line" command
  1295. was given).  The "dial" command calls locks the path (see the section  on  line
  1296. locking  below) and establishes a call on an exclusive basis.  If it is desired
  1297. to dial a call and then return to the shell (such as to  do  kermit  activities
  1298. depending  on standard in/out redirection), it is necessary to place the dialed
  1299. call under one device name (say, "/dev/cua0") and  then  escape  to  the  shell
  1300. within  Kermit  on a linked device which is separate from the dialed line (say,
  1301. "/dev/cul0").  This is the same technique used by uucp (to allow  locks  to  be
  1302. placed separately for dialing and conversing).
  1303.  
  1304. Because  modem  dialers have strict requirements to override the carrier-detect
  1305. signal most Unix implementations expect, the sequence for dialing is more rigid
  1306. than most other C-Kermit procedures.
  1307.  
  1308. Example one:
  1309.  
  1310.   kermit -l /dev/cul0 -b 1200
  1311.   C-Kermit>set modem-dialer hayes    hint: abbreviate set m h
  1312.   C-Kermit>dial 9,5551212
  1313.   Connected!
  1314.   C-Kermit>connect                   hint: abbreviate c
  1315.   logon, request remote server, etc.
  1316.   ^\c                                escape back
  1317.   C-Kermit> ...
  1318.   C-Kermit>quit                      hint: abbreviate q
  1319.  
  1320. this disconnects modem, and unlocks line.
  1321.  
  1322. Example two:
  1323.  
  1324.   kermit
  1325.   C-Kermit>set modem-dialer ventel
  1326.   C-Kermit>set line /dev/cul0
  1327.   C-Kermit>dial 9&5551212%
  1328.   Connected!
  1329.   C-Kermit> ...
  1330.  
  1331. Example three:
  1332.  
  1333.   kermit
  1334.   C-Kermit>take my-dial-procedure
  1335.  
  1336.  
  1337.  
  1338.   Connected!
  1339.  
  1340.   file my-dial-procedure:
  1341.   set modem hayes
  1342.   set line /dev/tty99
  1343.   dial 5551212
  1344.   connect
  1345.  
  1346. For  Hayes  dialers, two important switch settings are #1 and #6.  #1 should be
  1347. up so that the DTR is only asserted when the line is 'open'.  #6 should  be  up
  1348. so carrier-detect functions properly.  Switches #2 (English versus digit result
  1349. codes) and #4 (Hayes echoes modem commands) may be in either position.
  1350.  
  1351. For any dialers in general, this Kermit program requires that the modem provide
  1352. the  "carrier detect" signal when a call is in progress, and remove that signal
  1353. when the call completes or the line drops.  If a switch setting is available to
  1354. force  carrier detect, it should not be in that setting.  Secondly, this Kermit
  1355. program requires that the modem track the computer's "data terminal ready" sig-
  1356. nal  (DTR).    If a switch setting is available to simulate DTR asserted within
  1357. the modem, then it should not be in that setting.  Otherwise the modem will  be
  1358. unable  to hang up at the end of a call or when interrupts are received by Ker-
  1359. mit.
  1360.  
  1361. If you want to interrupt a dial command in progress (for instance, because  you
  1362. just  realize  that you gave it the wrong number), type a Control-C to get back
  1363. to command level.
  1364.  
  1365.  
  1366.                              THE 'SCRIPT' COMMAND:
  1367.  
  1368. Syntax: script expect send [expect send] . . .
  1369.  
  1370. "expect" has the syntax: expect[-send-expect[-send-expect[...]]]
  1371.  
  1372. This command facilitates logging into a remote system and/or invoking  programs
  1373. or other facilities after login on a remote system.
  1374.  
  1375. This  login  script facility operates in a manner similar to that commonly used
  1376. by the Unix uucp System's "L.sys" file entries.  A login script is  a  sequence
  1377. of the form:  
  1378.  
  1379.   expect send [expect send] . . .
  1380.  
  1381. where  expect  is a prompt or message to be issued by the remote site, and send
  1382. is the string (names, numbers, etc) to return.    The  send  may  also  be  the
  1383. keyword  EOT,  to send Control-D, or BREAK, to send a break signal.  Letters in
  1384. send may be prefixed by `~' to send special characters.  These are:
  1385.  
  1386.     ~b  backspace
  1387.     ~s  space
  1388.     ~q  `?'(trapped by Kermit's command interpreter)
  1389.     ~n  linefeed
  1390.     ~r  carriage return
  1391.     ~t  tab
  1392.     ~'  single quote
  1393.     ~~  tilde
  1394.  
  1395.  
  1396.  
  1397.     ~"  double quote
  1398.     ~x  XON (Control-Q)
  1399.     ~c  don't append a carriage return
  1400.     ~o[o[o]]  an octal character
  1401.     ~d  delay approx 1/3 second during send
  1402.     ~w[d[d]]  wait specified interval during expect, then time out
  1403.  
  1404. As with some uucp systems, sent strings are followed by ~r unless they  have  a
  1405. ~c.
  1406.  
  1407. Only  the last 7 characters in each expect are matched.  A null expect, e.g. ~0
  1408. or two adjacent dashes, causes a short delay before proceeding to the next send
  1409. sequence.  A null expect always succeeds.
  1410.  
  1411. As  with  uucp, if the expect string does not arrive, the script attempt fails.
  1412. If you expect that a sequence might not arrive, as with uucp,  conditional  se-
  1413. quences may be expressed in the form:  
  1414.  
  1415.   -send-expect[-send-expect[...]]
  1416.  
  1417. where dashed sequences are followed as long as previous expects fail.  Timeouts
  1418. for expects can be specified using ~w; ~w with no arguments waits 15 seconds.
  1419.  
  1420. Expect/send transactions can be easily be  debugged  by  logging  transactions.
  1421. This records all exchanges, both expected and actual.
  1422.  
  1423. Note that `\' characters in login scripts, as in any other C-Kermit interactive
  1424. commands, must be doubled up.  A line may be ended with a single `\'  for  con-
  1425. tinuation.
  1426.  
  1427. Example one:
  1428.  
  1429. Using  a  modem,  dial  a  UNIX  host site.  Expect "login" (...gin), and if it
  1430. doesn't come, simply send a null string with a ~r.  (Some Unixes require either
  1431. an  EOT  or  a  BREAK instead of the null sequence, depending on the particular
  1432. site's "logger" program.)  After providing user id and password, respond "x" to
  1433. a  question-mark prompt, expect the Bourne shell "$" prompt (and send return if
  1434. it doesn't arrive).  Then cd to directory kermit, and run  the  program  called
  1435. "wermit", entering the interactive connect state after wermit is loaded.
  1436.  
  1437.   set modem ventel
  1438.   set line /dev/tty77
  1439.   set baud 1200
  1440.   dial 9&5551212
  1441.   script gin:--gin:--gin: smith ssword: mysecret ~q x $--$ \
  1442.    cd~skermit $ wermit
  1443.   connect
  1444.  
  1445. Note  that  'set  line'  is  issued after 'set modem', but before 'set baud' or
  1446. other line-related parameters.
  1447.  
  1448. Example two:
  1449.  
  1450. Using a modem, dial the Telenet network.  This network  expects  three  returns
  1451. with  slight  delays between them.  These are sent following null expects.  The
  1452. single return is here sent as a null string, with a return appended by default.
  1453.  
  1454.  
  1455.  
  1456. Four  returns  are  sent  to  be  safe before looking for the prompt.  Then the
  1457. Telenet id and password are entered.  Then Telenet is instructed to connect  to
  1458. a  host  site  (c 12345).  The host has a data switch that asks "which system";
  1459. the script responds "myhost" (if the "which system" prompt doesn't appear,  the
  1460. Telenet  connect command is reissued).  The script waits for an "@" prompt from
  1461. the host, then sends the user ID ("joe") and  password  ("secret"),  looks  for
  1462. another  "@" prompt, runs Kermit, and in response to the Kermit's prompt (which
  1463. ends in ">"), gives the commands "set parity even" and  "server".    Files  are
  1464. then  exchanged.  The commands are in a take file; note the continuation of the
  1465. 'script' command onto several lines using the `\' terminator.
  1466.  
  1467.   set modem hayes
  1468.   set line /dev/acu
  1469.   set speed 1200
  1470.   set parity mark
  1471.   dial 9,5551212
  1472.   script ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0 @--@--@ id~saa001122 = 002211 @ \
  1473.       c~s12345 ystem-c~s12345-ystem myhost @ joe~ssecret @ kermit \
  1474.       > set~sparity~seven > server
  1475.   send some.stuff
  1476.   get some.otherstuff
  1477.   bye
  1478.   quit
  1479.  
  1480. Since these commands may be executed totally in the background, they  can  also
  1481. be  scheduled.  A typical shell script, which might be scheduled by cron, would
  1482. be as follows (csh used for this example):
  1483.  
  1484.   #
  1485.   #keep trying to dial and log onto remote host and exchange files
  1486.   #wait 10 minutes before retrying if dial or script fail.
  1487.   #
  1488.   cd someplace
  1489.   while ( 1 )
  1490.           kermit < /tonight.cmd >> nightly.log &
  1491.           if ( ! $status ) break
  1492.           sleep 600
  1493.   end
  1494.  
  1495. File tonight.cmd might have two takes in it, for example, one to  take  a  file
  1496. with  the set modem, set line, set baud, dial, and script, and a second take of
  1497. a file with send/get commands for  the  remote  server.    The  last  lines  of
  1498. tonight.cmd should be a bye and a quit.
  1499.  
  1500.  
  1501.                               THE 'HELP' COMMAND:
  1502.  
  1503. Syntax: help
  1504.    or: help keyword
  1505.    or: help {set, remote} keyword
  1506.  
  1507. Brief  help messages or menus are always available at interactive command level
  1508. by typing a question mark at any point.  A slightly more verbose form  of  help
  1509. is  available through the 'help' command.  The 'help' command with no arguments
  1510. prints a brief summary of how to enter commands and how to  get  further  help.
  1511. 'help'  may be followed by one of the top-level C-Kermit command keywords, such
  1512.  
  1513.  
  1514.  
  1515. as 'send', to request information about a command.  Commands such as 'set'  and
  1516. 'remote'  have  a further level of help.  Thus you may type 'help', 'help set',
  1517. or 'help set parity'; each will provide a successively more detailed  level  of
  1518. help.
  1519.  
  1520.  
  1521.                         THE 'EXIT' AND 'QUIT' COMMANDS:
  1522.  
  1523. These two commands are identical.  Both of them do the following:
  1524.  
  1525.    - Attempt to insure that the terminal is returned to normal.
  1526.    - Relinquish access to any communication line assigned via 'set line'.
  1527.    - Relinquish any uucp and multiuser locks on the communications line.
  1528.    - Hang  up the modem, if the communications line supports data terminal
  1529.      ready.
  1530.    - Close any open log files.
  1531.  
  1532. After exit from C-Kermit, your default directory will be the same as  when  you
  1533. started the program.  The 'exit' command is issued implicitly whenever C-Kermit
  1534. halts normally, e.g. after a command line invocation, or after certain kinds of
  1535. interruptions.
  1536.  
  1537.  
  1538. 9.5. UUCP Lock Files
  1539.  
  1540. Unix  has  no  standard  way  of obtaining exclusive access to an external com-
  1541. munication line.  When you issue the 'set line' command to  Unix  Kermit,  Unix
  1542. would  normally  grant  you  access  to  the line even if some other process is
  1543. making use of it.  The method adopted by  most  Unix  systems  to  handle  this
  1544. situation  is  the  "UUCP  lock  file".    UUCP, the Unix-to-Unix Copy program,
  1545. creates a file in its  directory  (usually  /usr/spool/uucp,  on  some  systems
  1546. /etc/locks)  with a name like LCK..name, where name is the device name, for in-
  1547. stance tty07.
  1548.  
  1549. Unix Kermit uses UUCP lock files in order to avoid conflicts with UUCP, tip, or
  1550. other  programs that follow this convention.  Whenever you attempt to access an
  1551. external line using the 'set line' command or `-l' on the command line,  Kermit
  1552. looks  in the UUCP directory for a lock file corresponding to that device.  For
  1553. instance, if you 'set line /dev/ttyi6' then Kermit looks for the file 
  1554.  
  1555.   /usr/spool/uucp/LCK..ttyi6
  1556.  
  1557. If it finds this file, it gives you an error message and a directory listing of
  1558. the file so that you can see who is using it, e.g.
  1559.  
  1560.   -r--r--r--  1 fdc        4 May  7 13:02 /usr/spool/uucp/LCK..ttyi6
  1561.  
  1562. In this case, you would look up user fdc to find out how soon the line will be-
  1563. come free.
  1564.  
  1565. This convention requires that the  uucp  directory  be  publicly  readable  and
  1566. writable.  If it is not, the program will issue an appropriate warning message,
  1567. but will allow you to proceed at your own risk (and the risk of anyone else who
  1568. might also be using the same line).
  1569.  
  1570. If  no lock file is found, Unix Kermit will attempt create one, thus preventing
  1571.  
  1572.  
  1573.  
  1574. anyone who subsequently tries to run Kermit, UUCP, tip, or similar programs  on
  1575. the  same line from gaining access until you release the line.  If Kermit could
  1576. not create the lock file (for instance because the  uucp  directory  is  write-
  1577. protected),  then  you  will  receive  a warning message but will be allowed to
  1578. proceed at your -- and everyone else's -- risk.  When  Kermit  terminates  nor-
  1579. mally, your lock file is removed.
  1580.  
  1581. Even  when  the  lock directory is writable and readable, the locking mechanism
  1582. depends upon all users using the same name for the same device.   If  a  device
  1583. has  more  than one path associated with it, then a lock can be circumvented by
  1584. using an alias.
  1585.  
  1586. When a lock-creating program abruptly terminates, e.g. because it crashes or is
  1587. killed  via  shell  command,  the  lock  file  remains  in  the uucp directory,
  1588. spuriously indicating that the line is in use.  If the lock file  is  owned  by
  1589. yourself,  you  may  remove it.  Otherwise, you'll have to get the owner or the
  1590. system manager to remove it, or else wait for a system task to do so; uucp sup-
  1591. ports  a function (uuclean) which removes these files after a predetermined age
  1592. -- uucp sites tend to run this function periodically via crontab.
  1593.  
  1594. Locking is not needed, or used, if communications occur over the  user's  login
  1595. terminal line (normally /dev/tty).
  1596.  
  1597. It may be seen that line locking is fraught with peril.  It is included in Unix
  1598. Kermit only because other Unix communication programs rely on it.  While it  is
  1599. naturally  desirable  to  assure  exclusive  access  to  a line, it is also un-
  1600. desirable to refuse access to a vacant line only because  of  a  spurious  lock
  1601. file, or because the uucp directory is not appropriately protected.
  1602.  
  1603.  
  1604. 9.6. C-Kermit under Berkeley or System III/V Unix:
  1605.  
  1606. C-Kermit  may be interrupted at command level or during file transfer by typing
  1607. Control-C.  The program will perform its normal exit  function,  restoring  the
  1608. terminal and releasing any lock.  If a protocol transaction was in progress, an
  1609. error packet will be sent to the opposite  Kermit  so  that  it  can  terminate
  1610. cleanly.
  1611.  
  1612. C-Kermit  may  be invoked in the background ("&" on shell commmand line).  If a
  1613. background process is "killed", the user will have to manually remove any  lock
  1614. file  and  may  need  to  restore  the  modem.  This is because the kill signal
  1615. (kill(x,9)) cannot be trapped by Kermit.
  1616.  
  1617. During execution of a system command ('directory', 'cwd', or `!'), C-Kermit can
  1618. often  be returned to command level by typing a single Control-C.  (With System
  1619. III/V, the usual  interrupt  function  (often  the  DEL  key)  is  replaced  by
  1620. Control-C.)
  1621.  
  1622. Under  Berkeley  Unix  only:  C-Kermit may also be interrupted by ^Z to put the
  1623. process in the background.  In this case the terminal is  not  restored.    You
  1624. will  have  to type Control-J followed by "reset" followed by another Control-J
  1625. to get your terminal back to normal.
  1626.  
  1627. Control-C, Control-Z, and Control-\ lose their normal functions during terminal
  1628. connection and also during file transfer when the controlling tty line is being
  1629. used for packet i/o.
  1630.  
  1631.  
  1632.  
  1633. If you are running C-Kermit in "quiet mode" in the foreground, then  interrupt-
  1634. ing  the  program  with a console interrupt like Control-C will not restore the
  1635. terminal to normal conversational operation.  This is because the  system  call
  1636. to  enable console interrupt traps will cause the program to block if it's run-
  1637. ning in the background, and the primary reason for quiet mode is to  allow  the
  1638. program  to  run  in  the background without blocking, so that you can do other
  1639. work in the foreground.
  1640.  
  1641. If C-Kermit is run in the background ("&" on shell commmand line), then the in-
  1642. terrupt  signal  (Control-C)  (and System III/V quit signal) are ignored.  This
  1643. prevents an interrupt signal intended for a foreground job (say a  compilation)
  1644. from being trapped by a background Kermit session.
  1645.  
  1646.  
  1647. 9.7. C-Kermit on the DEC Pro-3xx with Pro/Venix Version 1
  1648.  
  1649. The  DEC Professional 300 series are PDP-11/23 based personal computers.  Venix
  1650. Version 1 is a Unix v7 derivative.  It should not be confused with  Venix  Ver-
  1651. sion 2, which is based on ATT System V; these comments apply to Venix Version 1
  1652. only.  C-Kermit runs in local mode on the Pro-3xx when invoked  from  the  con-
  1653. sole;  the default device is /dev/com1.dout.  When connected to a remote system
  1654. (using C-Kermit's 'connect' command), Pro/Venix itself  (not  Kermit)  provides
  1655. VT52  terminal  emulation.   Terminal operation at high speeds (like 9600 baud)
  1656. requires xon/xoff flow control, which unfortunately  interferes  with  applica-
  1657. tions such as the EMACS that use Control-Q and Control-S as commands.
  1658.  
  1659. When  logging  in to a Pro-3xx (or any workstation) through the "back port", it
  1660. may be necessary to give the command  "set  line  /dev/tty"  in  order  to  get
  1661. C-Kermit to function correctly in remote mode (on a system in which it normally
  1662. expects to be operating in local mode).
  1663.  
  1664.  
  1665. 9.8. C-Kermit under VAX/VMS
  1666.  
  1667. Version 4C of C-Kermit can be built using VAX-11 C to run under VMS.   Most  of
  1668. the  descriptions  in  this manual hold true, but it should be noted that as of
  1669. this writing the VMS support is not thoroughly tested, and no explicit  support
  1670. exists for the various types of VMS files and their attributes.
  1671.  
  1672. The C-Kermit init file for VMS is called KERMIT.INI.
  1673.  
  1674.  
  1675. 9.9. C-Kermit on the Macintosh and other Systems
  1676.  
  1677. The  "protocol kernel" of C-Kermit is also used by Columbia's Macintosh Kermit.
  1678. The user and system interface is  entirely  different,  and  is  covered  in  a
  1679. separate document.
  1680.  
  1681. There  is  also  a Kermit for the Commodore Amiga based on C-Kermit, as well as
  1682. versions for MS-DOS.
  1683.  
  1684.  
  1685.  
  1686. 9.10. C-Kermit Restrictions and Known Bugs
  1687.  
  1688.    1. Editing characters:  The program's  interactive  command  interrupt,
  1689.       delete,  and  kill  characters are Control-C, Delete (or Backspace),
  1690.       and Control-U, respectively.  There is currently no  way  to  change
  1691.       them  to  suit your taste or match those used by your shell, in case
  1692.       those are different.
  1693.  
  1694.    2. High baud rates:  There's no way to specify baud rates  higher  than
  1695.       9600  baud.  Most Unix systems don't supply symbols for them (unless
  1696.       you use EXTA, EXTB), and even when they do, the program has  no  way
  1697.       of  knowing whether a specific port's serial i/o controller supports
  1698.       those rates.
  1699.  
  1700.    3. Modem controls:  If a connection is made over a  communication  line
  1701.       (rather  than  on  the controlling terminal line), and that line has
  1702.       modem controls, (e.g. data  terminal  ready  and  carrier  detection
  1703.       implementation),  returning  to  the shell level will disconnect the
  1704.       conversation.  In that case, one should use  interactive  mode  com-
  1705.       mands,  and  avoid use of piped shell-level operation (also see 'set
  1706.       modem-dialer' and 'dial' commands.)
  1707.  
  1708.    4. Login Scripts:  The present login scripts implementation follows the
  1709.       Unix conventions of uucp's "L.sys" file, rather than the normal Ker-
  1710.       mit "INPUT/OUTPUT" style, so there's no way  to  arbitrarily  mingle
  1711.       script  output  with Kermit commands (e.g. changing parity or duplex
  1712.       in the middle of a script).
  1713.  
  1714.    5. Dial-out vs dial-in  communications  lines:    C-Kermit  requires  a
  1715.       dial-out or dedicated line for the "set line" or "-l" options.  Most
  1716.       systems have some lines dedicated  to  dial-in,  which  they  enable
  1717.       "loggers"  on,  and some lines available for dial-out.  Where a line
  1718.       must be shared between dial-in and  dial-out,  several  options  are
  1719.       available (though they are, strictly speaking, outside the pervue of
  1720.       C-Kermit).
  1721.  
  1722.       A simple shell program can be used to change directionality  of  the
  1723.       line  if  your  Unix  has the enable(8) and disable(8) commands.  In
  1724.       that case, the shell program could "grep" a "who" to see if  anybody
  1725.       is  logged  onto  the  desired  line; if not, it could "disable" the
  1726.       line.  The shell program will need to be set-uID'ed to  root.    The
  1727.       shell  program  can  be  called from kermit prior to a dial command,
  1728.       e.g., "! mydisable.shellprog".   Prior  to  the  final  "quit"  from
  1729.       C-Kermit,  another  shell  program could be executed to "enable" the
  1730.       line again.  This program also needs to be set-uID'ed to root.
  1731.  
  1732.       If your Unix lacks the enable(8) and  disable(8)  commands,  another
  1733.       common  technique  works if your system supports the /etc/ttys file.
  1734.       A shell program could call up an awk program to find the line in the
  1735.       file  and  set  the enable byte to 0 (to directly disable the line).
  1736.       Likewise, it can be reenabled by a counterpart at the end.   It  may
  1737.       be  necessary  to pause for 60 seconds after modifying that file be-
  1738.       fore the logger sees it and actually disables the line.
  1739.  
  1740.    6. Using C-Kermit on Local Area Networks:   C-Kermit  can  successfully
  1741.       operate  at  speeds  up to 9600 baud over LANs, provided the network
  1742.  
  1743.  
  1744.  
  1745.       buffers are big enough to accommodate Kermit packets (which are  al-
  1746.       most always less than 100 characters long).
  1747.  
  1748.       When  computers are connected to LAN's through asynchronous terminal
  1749.       interfaces, then the connection should be configured to do  XON/XOFF
  1750.       flow  control between the network interface and the computer, rather
  1751.       than passing these signals through transparently.    This  can  help
  1752.       prevent  Kermit from overrunning the LAN's buffers if they are small
  1753.       (or if the LAN is congested), and will can also prevent the LAN from
  1754.       overrunning a slow Kermit's buffers.
  1755.  
  1756.       If  the network hardware cannot accept 100 characters at a time, and
  1757.       flow control cannot be done between the network  and  the  computer,
  1758.       then  Kermit's  "set send/receive packet-length" command can be used
  1759.       to shorten the packets.
  1760.  
  1761.    7. Resetting terminal after abnormal termination or kill: When C-Kermit
  1762.       terminates abnormally (say, for example, by a kill command issued by
  1763.       the operator) the user may need to reset the  terminal  state.    If
  1764.       commands  do  not  seem  to  be  accepted  at  the shell prompt, try
  1765.       Control-J "stty sane" Control-J  (use  "reset"  on  Berkeley  Unix).
  1766.       That  should  take  the  terminal  out of "raw mode" if it was stuck
  1767.       there.
  1768.  
  1769.    8. Remote host commands  may  time-out  on  lengthy  activity:    Using
  1770.       "remote  host"  to instruct the C-Kermit server to invoke Unix func-
  1771.       tions (like "make") that might take a long time  to  produce  output
  1772.       can cause timeout conditions.
  1773.  
  1774.    9. XOFF  deadlocks:    When  connecting back to C-Kermit after a trans-
  1775.       action, or after finishing the server, it may be necessary to type a
  1776.       Control-Q  to  clear  up  an  XOFF  deadlock.   There's not much the
  1777.       program can do about this...
  1778.  
  1779.   10. PC/IX Login Scripts -- Unfound Bug:  Though login scripts appear  to
  1780.       work  properly  on  most  processors,  in the case of the PC/XT with
  1781.       PC/IX, it appears that longer scripts need  to  be  broken  up  into
  1782.       shorter  scripts (invoked sequentially from the take file).  This is
  1783.       because the portion of the script handler which checks if an  opera-
  1784.       tion timed out seems to leave the processor in a strange state (i.e.
  1785.       hung).
  1786.  
  1787.  
  1788. 9.11. How to Build C-Kermit for a Unix System
  1789.  
  1790. The C-Kermit files, as distributed from Columbia, all  begin  with  the  prefix
  1791. "ck".    You  should  make  a  directory  for these files and then cd to it.  A
  1792. makefile is provided to build C-Kermit for  various  Unix  systems  (there  are
  1793. separate  makefiles  for  VMS and the Macintosh).  As distributed, the makefile
  1794. has the name "ckuker.mak".  You should rename it to "makefile"  and  then  type
  1795. "make xxx", where xxx is the symbol for your system, for instance "make bsd" to
  1796. make C-Kermit for 4.x BSD Unix.  The result will be a program called  "wermit".
  1797. You  should test this to make sure it works; if it does, then you can rename it
  1798. to "kermit" and install it for general use.  See the makefile for a list of the
  1799. systems supported and the corresponding "make" arguments.
  1800.  
  1801.  
  1802.  
  1803. 9.12. Adapting C-Kermit to Other Systems
  1804.  
  1805. C-Kermit is designed for portability.  The level of portability is indicated in
  1806. parentheses after the module name: "C" means any system that has a  C  compiler
  1807. that conforms to the description in "The C Programming Language" by Kernighan &
  1808. Ritchie (Prentice-Hall, 1978).  "Cf" is like "C", but also requires  "standard"
  1809. features like printf and fprintf, argument passing via argv/argc, and so on, as
  1810. described in Kernighan & Ritchie.  "Unix" means the module should be useful un-
  1811. der  any  Unix  implementation;  it requires features such as fork() and pipes.
  1812. Anything else means that the module is  particular  to  the  indicated  system.
  1813. C-Kermit file names are of the form:
  1814.  
  1815. ck<system><what>.<type>
  1816.  
  1817. where the part before the dot is no more than 6 characters long, the part after
  1818. the dot no more than 3 characters long, and:
  1819.  
  1820. <type> is the file type:
  1821.  
  1822.   c:    C language source
  1823.   h:    Header file for C language source
  1824.   w:    Wart preprocessor source, converted by Wart (or Lex) to a C program
  1825.   nr:   Nroff/Troff text formatter source
  1826.   mss:  Scribe text formatter source
  1827.   doc:  Documentation
  1828.   hlp:  Help text
  1829.   bld:  Instructions for building the program
  1830.   bwr:  A "beware" file - list of known bugs
  1831.   upd:  Program update log
  1832.   mak:  Makefile
  1833.  
  1834. <system> is a single character to tell what system the file applies to:
  1835.  
  1836.   a:    Descriptive material, documentation
  1837.   c:    All systems with C compilers
  1838.   d:    MS-DOS
  1839.   m:    Macintosh
  1840.   u:    Unix
  1841.   v:    VAX/VMS
  1842.   w:    Wart
  1843.  
  1844. <what> is mnemonic (up to 3 characters) for what's in the file:
  1845.  
  1846.   aaa:  A "read-me" file, like this one
  1847.   cmd:  Command parsing
  1848.   con:  Connect command
  1849.   deb:  Debug/Transaction Log formats, Typedefs
  1850.   dia:  Modem/Dialer control
  1851.   fio:  System-depdendent File I/O
  1852.   fns:  Protocol support functions
  1853.   fn2:  More protocol support functions
  1854.   ker:  General C-Kermit definitions, information, documentation
  1855.   mai:  Main program
  1856.   pro:  Protocol
  1857.   scr:  Script command
  1858.   tio:  System-dependent terminal i/o & control and interrupt handing
  1859.  
  1860.  
  1861.  
  1862.   usr:  User interface
  1863.   us2:  More user interface
  1864.   us3:  Still more user interface
  1865.  
  1866. Examples:
  1867.  
  1868. ckufio.c        File i/o for Unix
  1869. ckmtio.c        Terminal i/o for Macintosh
  1870. ckuker.mss      Scribe source for for Kermit User Guide chapter
  1871. ckuker.nr       Nroff source file for Unix C-Kermit man page
  1872.  
  1873. The following material discusses each of the C-Kermit modules briefly.
  1874.  
  1875. ckcmai.c, ckcker.h, ckcdeb.h (Cf):
  1876.     This  is  the  main program.  It contains declarations for global variables
  1877.     and a small amount of code to initialize some variables and invoke the com-
  1878.     mand  parser.    In  its distributed form, it assumes that command line ar-
  1879.     guments are passed to it via argc and argv.  Since this portion of code  is
  1880.     only several lines long, it should be easy to replace for systems that have
  1881.     different styles of user interaction.  The header files define symbols  and
  1882.     macros  used  by  the  various  modules  of C-Kermit.  ckcdeb.h is the only
  1883.     header file that is included by all the C-Kermit modules,  so  it  contains
  1884.     not  only  the  debug  format  definitions, but also any compiler-dependent
  1885.     typedefs.
  1886.  
  1887. ckwart.c (Cf), ckcpro.w (C):
  1888.     The  ckcpro module embodies the Kermit protocol state table and the code to
  1889.     accomplish state switching.  It is written in "wart", a language which  may
  1890.     be regarded as a subset of the Unix "lex" lexical analyzer generator.  Wart
  1891.     implements enough of lex to allow the ckprot module to function.   Lex  it-
  1892.     self  was not used because it is proprietary.  The protocol module ckcpro.w
  1893.     is read by wart, and a system-independent C program is produced.  The  syn-
  1894.     tax  of  a  Wart  program  is  illustrated by ckcpro.w, and is described in
  1895.     ckwart.doc.
  1896.  
  1897. ckcfns.c (C):
  1898.     The  module  contains  all  the Kermit protocol support functions -- packet
  1899.     formation, encoding, decoding, block check calculation, filename  and  data
  1900.     conversion, protocol parameter negotiation, and high-level interaction with
  1901.     the communication line and file system.  To accommodate small systems, this
  1902.     module has been split into two -- ckcfns.c and ckcfn2.c.
  1903.  
  1904. ckutio.c:
  1905.     This module contains the system-dependent primitives for communication line
  1906.     i/o,  timers, and interrupts for the various versions of Unix.  Certain im-
  1907.     portant variables are defined  in  this  module,  which  determine  whether
  1908.     C-Kermit  is  by  default  remote  or local, what the default communication
  1909.     device is, and so forth.  The tio module maintains its own private database
  1910.     of  file descriptors and modes for the console terminal and the file trans-
  1911.     fer communication line so that other modules (like ckcfns or  the  terminal
  1912.     connect module) need not be concerned with them.  The variations among Unix
  1913.     implementations with respect to terminal  control  and  timers  are  accom-
  1914.     modated via conditional compilation.
  1915.  
  1916. ckufio.c:
  1917.     This module contains system-dependent primitives  for  file  i/o,  wildcard
  1918.  
  1919.  
  1920.  
  1921.     (meta  character) expansion, file existence and access checking, and system
  1922.     command execution for the various versions of Unix.  It maintains an inter-
  1923.     nal  database  of i/o "channels" (file pointers in this case) for the files
  1924.     C-Kermit cares about -- the input file (the file which is being sent),  the
  1925.     output file (the file being received), the various logs, the screen, and so
  1926.     forth.  This module varies little among Unix implementations except for the
  1927.     wildcard  expansion  code;  the  directory structure of 4.2bsd Unix is dif-
  1928.     ferent from that of other Unix systems.  Again, variation among  Unix  sys-
  1929.     tems is selected using conditional compilation.
  1930.  
  1931. ckuusr.h, ckuusr.c, ckuus2.c, ckuus3.c (Unix):
  1932.     This is the "user interface" for C-Kermit.  It includes the command parser,
  1933.     the screen output functions, and console input functions.  The command par-
  1934.     ser comes in two pieces -- the traditional Unix command line decoder (which
  1935.     is  quite  small and compact), and the interactive keyword parser (which is
  1936.     rather large).  This module is fully replacable; its interface to the other
  1937.     modules  is  very  simple,  and is explained at the beginning of the source
  1938.     file.  The ckuusr  module  also  includes  code  to  execute  any  commands
  1939.     directly  which don't require the Kermit protocol -- local file management,
  1940.     etc.  The module is rated "Unix" because it makes  occasional  use  of  the
  1941.     system() function.
  1942.  
  1943.     Note  that  while ckuusr is logically one module, it has been split up into
  1944.     three C source files, plus a header file for the symbols they share in com-
  1945.     mon.   This is to accommodate small systems that cannot handle big modules.
  1946.     ckuusr.c has the command line and  top-level  interactive  command  parser;
  1947.     ckuus2.c  has  the  help command and strings; ckuus3 has the set and remote
  1948.     commands along with the logging, screen, and "interrupt" functions.
  1949.  
  1950. ckucmd.c, ckucmd.h (Cf):
  1951.     This  is an interactive command parsing package developed for C-Kermit.  It
  1952.     is written portably enough to be usable on any system that has a C compiler
  1953.     that  supports  functions  like  printf.    The file name parsing functions
  1954.     depend upon primitives defined in the fio module; if these primitives  can-
  1955.     not  be  supplied for a certain system, then the filename parsing functions
  1956.     can be deleted, and the package will still be useful for parsing  keywords,
  1957.     numbers, arbitrary text strings, and so forth.  The style of interaction is
  1958.     the same as that found on the DECSYSTEM-20.
  1959.  
  1960. ckucon.c (Unix):
  1961.     This is the connect module.  As supplied, it should operate in any Unix en-
  1962.     vironment, or any C-based environment that provides  the  fork()  function.
  1963.     The  module  requires  access  to global variables that specify line speed,
  1964.     parity, duplex, flow control, etc,  and  invokes  functions  from  the  tio
  1965.     module  to  accomplish the desired settings and input/output, and functions
  1966.     from the fio module to perform session logging.  No terminal  emulation  is
  1967.     performed,  but  since  standard  i/o  is used for the console, this may be
  1968.     piped through a terminal emulation filter.  The ckucon function may be  en-
  1969.     tirely replaced, so long as the global settings are honored by its replace-
  1970.     ment.  PC implementations of C-Kermit may require the ck?con module  to  do
  1971.     screen  control,  escape sequence interpretation, etc, and may also wish to
  1972.     write special code to get the best possible performance.
  1973.  
  1974. ckudia.c (Unix):
  1975.     This  is the dialer module.  As supplied, it handles Hayes, Ventel, Penril,
  1976.     Racal-Vadic, and several other modems.
  1977.  
  1978.  
  1979.  
  1980. ckuscr.c (Unix):
  1981.     This  is  the  login  script  module.    As supplied, it handles uucp-style
  1982.     scripts.
  1983.  
  1984. Moving C-Kermit to a new system entails:
  1985.  
  1986.    1. Creating a new ck?tio module in C, assembler, or  whatever  language
  1987.       is  most  appropriate  for system programming on the new system.  If
  1988.       the system is Unix-like,  then  support  may  be  added  within  the
  1989.       ckutio.c module itself using conditional compilation.
  1990.  
  1991.    2. Creating a new ck?fio module, as above.
  1992.  
  1993.    3. If  the system is not Unix-like, then a new ckuusr module may be re-
  1994.       quired, as well as a different invocation of it from ckcmai.
  1995.  
  1996.    4. If the distributed connect module doesn't work or  performs  poorly,
  1997.       then  it may be replaced.  For instance, interrupt-driven i/o may be
  1998.       required, especially if the system doesn't have forks.
  1999.  
  2000. Those who favor  a  different  style  of  user/program  interaction  from  that
  2001. provided  in ckuusr.c may replace the entire module, for instance with one that
  2002. provides a mouse/window/icon environment, a menu/function-key environment, etc.
  2003.  
  2004. A few guidelines should be followed to maintain portability:
  2005.  
  2006.    - Keep variable and function names to 6 characters or less.  Don't  use
  2007.      identifiers  that  are  distinguished  from  one  another only by al-
  2008.      phabetic case.
  2009.  
  2010.    - Keep modules small.  For instance, on a PDP-11  it  is  necessary  to
  2011.      keep  the  code segment of each module below 8K in order to allow the
  2012.      segment mapping to occur which is necessary to  run  programs  larger
  2013.      than 64K on a non-I-and-D-space machine.
  2014.  
  2015.    - Keep  strings short; many compilers have restrictive maximum lengths;
  2016.      128 is the smallest maximum string constant length we've  encountered
  2017.      so far.
  2018.  
  2019.    - Keep  (f,s)printf  formats  short.  If these exceed some compiler de-
  2020.      pendent maximum (say, 128) memory will be overwritten and the program
  2021.      will probably core dump.
  2022.  
  2023.    - Do not introduce system dependencies into ckcpro.w or ckcfn*.c.
  2024.  
  2025.    - If  a  variable  is a character, declare as CHAR, not int, to prevent
  2026.      the various sign extension and byte swapping foulups that occur  when
  2027.      characters are placed in integer variables.
  2028.  
  2029.    - Remember  that  different  systems may use different length words for
  2030.      different things.  Don't assume an integer can be used as a  pointer,
  2031.      etc.
  2032.  
  2033.    - Don't  declare  static  functions; these can wreak havoc with systems
  2034.      that do segment mapping.
  2035.  
  2036.  
  2037.  
  2038.    - In conditional compilations expressions, use #ifdef and  #ifndef  and
  2039.      not  #if,  which is not supported by some compilers.  Also, don't use
  2040.      any operators in these expressions; many compilers will fail  to  un-
  2041.      derstand expressions like #ifdef FOO | BAR.
  2042.  
  2043.    - Don't define multiline macros.
  2044.  
  2045. In  general,  remember that this program will have to be compilable by old com-
  2046. pilers and runnable on small systems.
  2047.  
  2048.  
  2049.  
  2050. Index
  2051.  
  2052. ,
  2053.           C-Kermit   118
  2054.  
  2055.           Dialout Modems   139
  2056.  
  2057.           Emergency Exit   120
  2058.  
  2059.           File Warning   120
  2060.  
  2061.           Hayes Modem   141
  2062.  
  2063.           IBM   138
  2064.  
  2065.           Modems   139
  2066.  
  2067.           TELENET   142
  2068.  
  2069.           Unix Kermit   118
  2070.  
  2071.           Warning   120
  2072.  
  2073.  
  2074.  
  2075.                                Table of Contents
  2076.  
  2077. 9. UNIX KERMIT                                                              118
  2078.  
  2079.    9.1. The Unix File System                                                119
  2080.    9.2. File Transfer                                                       120
  2081.    9.3. Command Line Operation                                              121
  2082.    9.4. Interactive Operation                                               126
  2083.    9.5. UUCP Lock Files                                                     144
  2084.    9.6. C-Kermit under Berkeley or System III/V Unix:                       145
  2085.    9.7. C-Kermit on the DEC Pro-3xx with Pro/Venix Version 1                146
  2086.    9.8. C-Kermit under VAX/VMS                                              146
  2087.    9.9. C-Kermit on the Macintosh and other Systems                         146
  2088.    9.10. C-Kermit Restrictions and Known Bugs                               147
  2089.    9.11. How to Build C-Kermit for a Unix System                            148
  2090.    9.12. Adapting C-Kermit to Other Systems                                 149
  2091.  
  2092. Index                                                                         i
  2093.